#include "Word_i.h"

Word_i::~Word_i(){}

Word_i::Word_i(CategoryValue cat,PropertyType proptyType,char* terms){
	category = cat;
	propertyType = proptyType;
	term = terms;
}



//[1, NOM, « bail », <MASC, « baux »>]
char* Word_i::toFile(){
	
	//char * strWord = (char*) malloc sizeof((strlen("«") + strlen(term)+ strlen("»,<"))+1);
	char *strWord = CORBA::string_alloc(strlen("«") + strlen(term) + strlen("»,<"));
	strcpy(strWord,"«");
	strcat(strWord,term);
	strcat(strWord,"»,<");

	if(category == NOM){
		//propertyType.NOM
		//PropNom prpnom = propertyType.pNom;
		//char * str = (char*) malloc sizeof(strlen(strWord) + 5 + strlen(prpnom.pluriel) +strlen("»>") + strlen("«") + 3);
		char * str = CORBA::string_alloc(strlen(strWord) + 8 + strlen((propertyType.pNom()).pluriel) +strlen("»>") + strlen("«"));
		strcpy(str,strWord);
		if((propertyType.pNom()).genre == MASC)
			strcat(str,"MASC");
		else
			strcat(str,"FEM");
		strcat(str,",«");
		strcat(str,(propertyType.pNom()).pluriel);
		strcat(str,"»>");
		return CORBA::string_dup(str);
		
	}else
	if(category == ADJ){
		//propertyType.NOM
		//PropAdj padjec = propertyType.pAdj;
		//char * str = (char*) malloc sizeof(strlen(strWord) + 5 + strlen(padjec.pluriel) + strlen(padjec.feminin) +strlen("»>") + strlen("«") + 3);
		char * str = CORBA::string_alloc(strlen(strWord) + 5 + strlen((propertyType.pAdj()).pluriel) + strlen((propertyType.pAdj()).feminin) +strlen("»>") + strlen("«") + 3);

		strcpy(str,strWord);
		strcat(str,(propertyType.pAdj()).feminin);
		strcat(str,",«");
		strcat(str,(propertyType.pAdj()).pluriel);
		strcat(str,"»>");
		return CORBA::string_dup(str);
	}else{
		//PropVer pverb = propertyType.pVer;
		//char * str = (char*) malloc sizeof(strlen(strWord) + 20 + strlen("»>") + strlen("«"));
		char * str = CORBA::string_alloc(strlen(strWord) + 20 + strlen("»>") + strlen("«"));
		strcpy(str,strWord);
		if((propertyType.pVer()).groupe == G1)
			strcat(str,"G1");
		else 
		if((propertyType.pVer()).groupe == G2)
			strcat(str,"G2");
		else
			strcat(str,"G3");
		strcat(str,",«");
		if((propertyType.pVer()).transitivite == TRANS)
			strcat(str,"TRANS");
		else
			strcat(str,"INTR");

		strcat(str,"»>");
		return CORBA::string_dup(str);
	}
	
}

char* Word_i::myTerm(){
	return CORBA::string_dup(term);
}

CategoryValue Word_i::myCategory(){
	return category;
}

PropertyType* Word_i::myProperties(){
	//return &propertyType;
	return new PropertyType(propertyType);
}
void Word_i::setPropertyType(PropertyType ptyType){
	propertyType = ptyType;
}
void Word_i::setCategoryValue(CategoryValue cat){
	category = cat;	
}
void Word_i::setTerm(char* terms){
	//CORBA::string_free(*term);
	term = CORBA::string_dup(terms);
	//term = terms;
}


